/**
 * 自定义loading  框请求
 * 
 * isShowLoading :true  弹出loading窗
 * isEndLoading： true  最后需要隐藏loading窗。若是false，则不隐藏
 */
export function request(requestData, isShowLoading = true, isEndLoading = true, onSuccess, onFail) {
  this.requestApi(requestData, isShowLoading, isEndLoading, null, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}
/**
 *  带有loading 框的 不能自定义的请求
 * 
 */
export function request1(requestData, onSuccess, onFail) {  // console.log("onSuccess========request1===>", success, fail);
  requestApi(requestData, true, true, null, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}
/**
 * 自定义token  请求
 * 
 * isShowLoading :true  弹出loading窗
 * isEndLoading： true  最后需要隐藏loading窗。若是false，则不隐藏
 * token: 可以自定义token
 */
export function request2(requestData, isShowLoading = true, isEndLoading = true, token = null, onSuccess, onFail) {
  requestApi(requestData, isShowLoading, isEndLoading, token, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}
/**
 * 自定义loading  框请求
 * 
 * isShowLoading :true  弹出loading窗
 * isEndLoading： true  最后需要隐藏loading窗。若是false，则不隐藏
 */
export function request3(requestData, isShowLoading = true, isEndLoading = true, token, onSuccess, onFail) {
  requestApi(requestData, isShowLoading, isEndLoading, token, function (result) {
    onSuccess(result)
  }, function (error) {
    onFail(error)
  })
}

/**
 * 自定义token  请求
 * 
 * isShowLoading :true  弹出loading窗
 * isEndLoading： true  最后需要隐藏loading窗。若是false，则不隐藏
 * token: 可以自定义token。用户虚拟账号使用车辆
 */
export function requestApi(requestData, isShowLoading = true, isEndLoading = true, token = null, onSuccess, onFail) {
  var app = getApp().globalData;  // 1、检查是否已经登录，在未登录的时候，可以提前缓存一个临时token欺骗本次检查。等登录完成后，再更新token值
  // if (!util.hasLogin()) {
  //   return;
  // }  
  // 2、检查网络状态
  var networkState = checkNetworkConnected()
  if (networkState==false) { //没有网络
    onFail("网络请求失败，稍后再试")    
    return;
  } if (!requestData) {
    onFail("数据异常，请稍后再试")    
    return;
  } 
  let cacheToken =requestData.token 
  let newToken = token == null ? cacheToken : token
  console.log("newToken===========>", newToken)
  requestData.token = newToken
  requestData.version = app.version
  console.log("==================================================开始请求网络数据start========================================")
  console.log(requestData)
  console.log("==================================================开始请求网络数据end===========================================")  
  var baseUrl = app.debug ? app.debugUrl : app.releaseUrl
  console.log("===baseUrl===>" + baseUrl)  
  if (isShowLoading) {
    wx.showLoading({
      title: '加载中...',
    })
    // util.showLoading("加载中")
  }
  const requestTask = wx.request({
    url: baseUrl.concat(requestData.path), data: requestData, header: {
      'content-type': 'application/json',
      'token':requestData.token
    },
    method: 'POST',
    dataType: 'json',
    success: function (res) {
      wx.hideLoading()
      console.log("==================================================返回请求结果start========================================")
      console.log(res.data)
      console.log("==================================================返回请求结果end===========================================")
      if (res.data.code == 0) { //成功
        console.log("onSuccess===========>", onSuccess);
        onSuccess(res.data)
      }else if (res.data.code == 500) { //业务上的
        console.log("onSuccess===========>", onSuccess);
        onSuccess(res.data)
      }else if (res.data.code == 501) { //业务上的
        console.log("onSuccess===========>", onSuccess);
        onSuccess(res.data)
      }else if (res.data.code == 301) { //业务上的（无更多团购）
        console.log("onSuccess===========>", onSuccess);
        onSuccess(res.data)
      } else if (res.data.code == 800) { //业务上的
        console.log("onSuccess===========>", onSuccess);
        onSuccess(res.data)
      } else if (res.data.code == 1021) { //未缴纳押金
        wx.navigateTo({
          url: '/pages/recharge/recharge',
        })        
        return false;
      } else if (res.data.code == 1006) { //余额不足
        wx.navigateTo({
          url: '/pages/deposited/deposited',
        })        
        return false;
      } else if (res.data.code == 1019) { //未实名
        wx.navigateTo({
          url: '/pages/certify/certify',
        })        
        return false;
      } else if (res.data.code == 1001) { //token过期
        wx.reLaunch({
          url: '/pages/login/login'
        }); 
        return false;
      } else { //失败
        let error = res.data == null || typeof (res.data) == "undefined" ? "网络请求失败，请稍后再试" : res.data.desc
        onFail(error)
        console.log("error===========>", error);
      }
    },
    fail: function (res) {
      wx.hideLoading()
      console.log("onFail===========>", res);
      onFail("网络请求失败，稍后再试")
    },
    complete: function (res) {
      console.log("complete===========>", isEndLoading);
      if (isEndLoading) {
        wx.hideLoading()
      }
    }
  })
};

function checkNetworkConnected(){
  wx.getNetworkType({
    success: function(res) {
      //// 返回网络类型, 有效值：wifi/2g/3g/4g/unknown(Android下不常见的网络类型)/none(无网络)
      
      if (res.networkType == "none") {
          return false;
      } else {
        return true;
      }
    },
  })
}
